
//字面量literal
//综合了联合类型、枚举的特点，不仅可以指定多个数据类型，还可以具体到某个值
//或者直接理解为枚举的变种类型
//这种类型在使用过程中很灵活很强大
let literal: 0 | 1 | 2 | false | [100, 200, 300];
literal = 0;
//literal = 666; //报错，因为没有定义这个字面量值，即仅限于上面定义的字面量值

function merge2(a: number | string, b: number | string, dataType: "is String" | "is Number") { //参数为联合、字面量类型的情况
    if(dataType === 'is String' && dataType === 'is String') {
        return a.toString() + b.toString();
    }
    if(typeof a === 'number' && typeof b === 'number') {
        return a + b;
    }
}
console.log(merge2(100, 200, "is Number"));
console.log(merge2(100, 200, "is String"));
console.log(merge2("hello", " simon", "is String"));
